import router from "@/router/index.js";
import axios from "axios"


const errorHandle = (status,info) =>{
  switch(status){
    case 400:
      console.log("语义错误");
      break;
    case 401:
      console.log("服务器认证失败");
      break;
    case 403:
      console.log("服务器请求拒绝执行");
      break;
    case 404:
      console.log("请检查网路请求地址");
      break;
    case 500:
      console.log("服务器发生意外");
      break;
    case 502:
      console.log("服务器无响应");
      break;
    default:
      console.log(info);
      break;
   }
}
/**
 * 创建Axios对象
 */
const instance = axios.create({
  timeout:5000,
})



//将前端的token通过请求传入后端
instance.interceptors.request.use(
  config =>{
    //获取token
    let token=sessionStorage.getItem("token")
    if(token){
      config.headers.token=token
    }
    return config
   },
  error => Promise.reject(error)
)

//由于前端不能处理token的失效 可以让后端处理token的失效 并且通过状态码反映
instance.interceptors.response.use(
  // response => response.status === 200 ? Promise.resolve(response) : Promise.reject(response),\
  response=>{
    if(response.status==200){//这是HTTP响应的状态码，由服务器返回，表示请求的处理结果 200说明接收到后端的response
      if(response.data.status==401){//这是服务器返回的数据内容中的一个字段，通常用于提供更详细的状态信息
        //token过期
        sessionStorage.removeItem("token")
        router.push('/login')
      }
      
        return Promise.resolve(response)
      
    }else{
        return Promise.resolve(response)
    }
  },
  error =>{
    const { response } = error;
    if(response){
      errorHandle(response.status,response.info)
     }else{
      console.log("网络请求被中断了");
     }
   }
)
export default instance


